import java.util.ArrayList;

public class Elemental extends Piece {
	/*
	 * 8   - - - - - - - - - - - -    
	 * 7   - - - - - - - - - - - -    
	 * 6   - - - - - - - - - - - -    
	 * 5   - - x - - - - - - - - -    
	 * 4   - x - x - - - - -[E]- -      EARTH (2)
	 * 3   - - x - - - - - - - - -    
	 * 2   - - - - - - - - - - - -    
	 * 1   - - - - - - - - - - - -    
	 * 
	 * 8   - - - - - - - - - - - -    
	 * 7   - - - - - - - - - - - -    
	 * 6   - - x - - - - - - - - -    
	 * 5   - m x m - - - - -[x]- -    
	 * 4   x x E x x - - -[x]-[x]-      UNDER (1)
	 * 3   - m x m - - - - -[x]- -    
	 * 2   - - x - - - - - - - - -    
	 * 1   - - - - - - - - - - - -    
     * 
	 * 	   a b c d e f g h i j k l
	 * 
	 * The Elemental starts on the UnderBoard and can move to the EarthBoard; it cannot move
	 * while on the EarthBoard.
	 */
	
	public Elemental(int s) {
		super(s);
	}

	protected ArrayList<Square> getAvailableMoves() {
		moves.clear();
		if(getSquare().getBoard().getLevel() == 1) {
			for(int i = 0; i < 4; i++) {
				moves.add(getSquare().getFarSquare(Square.NORTHEAST + 90 * i, 1));
			}
		}
		System.out.println(moves);
		return moves;
	}
	
	protected ArrayList<Square> getAvailableCapts() {
		capts.clear();
		if(getSquare().getBoard().getLevel() == 1) {
			for(int i = 0; i < 4; i++) {
				capts.add(getSquare().getFarSquare(Square.NORTH + 90 * i, 1));
				if(!capts.get(capts.size() - 1).isOccupied()) {
					capts.add(getSquare().getFarSquare(Square.NORTH + 90 * i, 2));
					capts.add(getSquare().getFarSquare(Square.NORTH + 90 * i, 1).getFarSquare(Square.UP, 1));
				}
			}
		} else if(getSquare().getBoard().getLevel() == 2 && !getSquare().getFarSquare(Square.DOWN, 1).isOccupied()) {
			for(int i = 0; i < 4; i++) {
				capts.add(getSquare().getFarSquare(Square.DOWN, 1).getFarSquare(Square.NORTH + 90 * i, 1));
			}
		}
		return capts;
	}
	
	public String toString() {
		if(side == 1) {
			return "E";
		} else if(side == 2) {
			return "e";
		} else {
			return "no side";
		}
	}
}
